import fieldTypes from './field-types-desc';

const getDescribleData = (type = 'text') => {
    const fieldType = fieldTypes.find(({ code }) => code === type) || {};
    return [
        {
            params: 'type',
            des: `表单项控件的类型(此控件的 type 固定为 "${type})"`,
            type: 'String',
            values: '-',
            defaultVal: '-',
        },
        {
            params: 'value',
            des: '表单项控件的默认值，若绑定值为空，将获取该值作为初始值',
            type: fieldType.valueType,
            values: '-',
            defaultVal: '-',
        },
        ...(!['textarea'].includes(type) ? [
            {
                params: 'size',
                des: '尺寸大小',
                type: 'String',
                values: '"large" | "default" | "small"',
                defaultVal: '"default"',
            },
        ] : []),
        {
            params: 'maxlength',
            des: '可输入的最大长度',
            type: 'Number',
            values: '-',
            defaultVal: '500',
        },
        {
            params: 'disabled',
            des: '是否禁用',
            type: 'Boolean',
            values: 'true | false',
            defaultVal: 'false',
        },
        {
            params: 'readonly',
            des: '是否只读',
            type: 'Boolean',
            values: 'true | false',
            defaultVal: 'false',
        },
        {
            params: 'autofocus',
            des: '自动获取焦点',
            type: 'Boolean',
            values: 'true | false',
            defaultVal: 'false',
        },
        {
            params: 'placeholder',
            des: '输入框占位提示',
            type: 'String',
            values: '-',
            defaultVal: '"请输入"',
        },
        ...(['inputrange'].includes(type) ? [
            {
                params: 'startPlaceholder',
                des: '第一个输入框占位提示',
                type: 'String',
                values: '-',
                defaultVal: '"请输入"',
            },
            {
                params: 'endPlaceholder',
                des: '第二个输入框占位提示',
                type: 'String',
                values: '-',
                defaultVal: '"请输入"',
            },
            {
                params: 'rangeSeparator',
                des: '输入框连接符',
                type: 'String',
                values: '-',
                defaultVal: '"-"',
            },
        ] : []),
        {
            params: 'trim',
            des: '是否过滤空格（过滤全部空格、过滤首尾空格、不过滤）',
            type: 'String',
            values: '"all" | "common" | "none"',
            defaultVal: '"none"',
        },
        ...(!['textarea'].includes(type) ? [
            {
                params: 'valueType',
                des: '若配置了该字段，则在输入时将对内容根据类型进行转换，若设置为 "number"，则值会转为 String 类型的数值',
                type: 'String',
                values: '"number"(数值) | "letter"(字母) | "text"(文本)',
                defaultVal: '"text"',
            },
            {
                params: 'min',
                des: 'valueType 为 number 时生效，限制数字的最小值',
                type: 'Number',
                values: '-',
                defaultVal: '-',
            },
            {
                params: 'max',
                des: 'valueType 为 number 时生效，限制数字的最大值',
                type: 'Number',
                values: '-',
                defaultVal: '-',
            },
            {
                params: 'precision',
                des: 'valueType 为 number 时生效，控制数值精度(小数位数)',
                type: 'Number',
                values: '-',
                defaultVal: '0',
            },
        ] : []),
        ...(['text', 'textarea', 'inputrange'].includes(type) ? [
            {
                params: 'showWordLimit',
                des: '是否展示字数统计',
                type: 'Boolean',
                values: 'true | false',
                defaultVal: `${['textarea'].includes(type)}`,
            },
        ] : []),
        ...(['password'].includes(type) ? [
            {
                params: 'show-password',
                des: '是否展示密码隐藏切换按钮',
                type: 'Boolean',
                values: 'true | false',
                defaultVal: 'true',
            },
            {
                params: 'auto-complete',
                des: '原生 autocomplete 属性',
                type: 'String',
                values: '-',
                defaultVal: '"off"',
                version: 'v1.0.5',
            },
        ] : []),
        ...(['textarea'].includes(type) ? [
            {
                params: 'resize',
                des: '控制多行文本框宽高是否能手动拖拽调整',
                type: 'Boolean | String',
                values: 'true | false | \'none\' | \'both\' | \'horizontal\' | \'vertical\'',
                defaultVal: '-',
            },
            {
                params: 'rows',
                des: '多行文本输入框的行数',
                type: 'Number',
                values: '-',
                defaultVal: '-',
            },
            {
                params: 'autosize',
                des: '高度是否自适应，可以接受一个对象，比如: { minRows: 2, maxRows: 6 }',
                type: 'Boolean | Object',
                values: '-',
                defaultVal: '{ minRows: 2, maxRows: 6 }',
            },
        ] : []),
        ...(['text', 'inputrange'].includes(type) ? [
            {
                params: 'formatter',
                des: '格式化输入内容的方法',
                type: 'Function(value)',
                values: '-',
                defaultVal: '-',
            },
            {
                params: 'parser',
                des: '指定从格式化器输入中提取的值',
                type: 'Function(value)',
                values: '-',
                defaultVal: '-',
            },
        ] : []),
        ...(!['textarea'].includes(type) ? [
            {
                params: 'clearable',
                des: '是否展示清空图标',
                type: 'Boolean',
                values: 'true | false',
                defaultVal: 'true',
            },
            {
                params: 'prefixIcon',
                des: '自定义前缀图标',
                type: 'String | Component',
                values: '-',
                defaultVal: '-',
            },
            {
                params: 'suffixIcon',
                des: '自定义后缀图标',
                type: 'String | Component',
                values: '-',
                defaultVal: '-',
            },
            {
                params: 'unit',
                des: '控件尾部的单位文案配置',
                type: 'String',
                values: '-',
                defaultVal: '-',
            },
        ] : []),
        ...(!['inputrange'].includes(type) ? [
            {
                params: 'prefixText',
                des: '自定义前缀文案',
                type: 'String',
                values: '-',
                defaultVal: '-',
            },
            {
                params: 'suffixText',
                des: '自定义后缀文案',
                type: 'String',
                values: '-',
                defaultVal: '-',
            },
        ] : []),
        {
            params: 'validateEvent',
            des: '输入时是否触发表单的校验',
            type: 'Boolean',
            values: 'true | false',
            defaultVal: 'true',
        },
    ];
};

export default getDescribleData;
